<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>贡献指南 | Luckysheet文档</title>
    <meta name="generator" content="VuePress 1.8.0">
    
    <meta name="description" content="Luckysheet ，一款纯前端类似excel的在线表格，功能强大、配置简单、完全开源。本站包含官方配置文档,API,教程。">
    <meta property="article:modified_time" content="2021-01-19T01:33:53.000Z">
    <meta property="og:title" content="贡献指南">
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://mengshukeji.github.io/LuckysheetDemo/zh/guide/contribute.html">
    <meta name="twitter:title" content="贡献指南">
    <meta name="twitter:url" content="https://mengshukeji.github.io/LuckysheetDemo/zh/guide/contribute.html">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:label1" content="Written by">
    
    <link rel="preload" href="/LuckysheetDocs/assets/css/0.styles.58462003.css" as="style"><link rel="preload" href="/LuckysheetDocs/assets/js/app.02d9598d.js" as="script"><link rel="preload" href="/LuckysheetDocs/assets/js/2.daa13025.js" as="script"><link rel="preload" href="/LuckysheetDocs/assets/js/30.bf70d4f4.js" as="script"><link rel="prefetch" href="/LuckysheetDocs/assets/js/10.866635ea.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/11.825eabba.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/12.980dcb91.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/13.119fa3a0.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/14.61ea2478.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/15.51a43d85.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/16.de626d16.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/17.e9ae302c.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/18.46d5e5a0.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/19.6ab6bd88.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/20.a4dd0048.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/21.cf5034d8.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/22.c45a4387.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/23.e08fd533.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/24.d1e4369b.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/25.291afc50.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/26.e74f90a6.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/27.1142ecb7.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/28.d6d28da0.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/29.1ae5f953.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/3.c428902d.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/31.d87cf3af.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/32.a1b6f5f4.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/33.eded6080.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/4.b5e0f872.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/5.e526f9d4.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/6.8106d72b.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/7.c0fe87fd.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/8.abc5c19b.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/9.2bf3882a.js">
    <link rel="stylesheet" href="/LuckysheetDocs/assets/css/0.styles.58462003.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/LuckysheetDocs/zh/" class="home-link router-link-active"><img src="/LuckysheetDocs/img/logo.png" alt="Luckysheet文档" class="logo"> <span class="site-name can-hide">Luckysheet文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/LuckysheetDocs/zh/" class="nav-link">
  首页
</a></div><div class="nav-item"><a href="/LuckysheetDocs/zh/guide/" class="nav-link router-link-active">
  指南
</a></div><div class="nav-item"><a href="https://mengshukeji.github.io/LuckysheetDemo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  演示
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="了解更多" class="dropdown-title"><span class="title">了解更多</span> <span class="arrow down"></span></button> <button type="button" aria-label="了解更多" class="mobile-dropdown-title"><span class="title">了解更多</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/about/" class="nav-link">
  关于
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="选择语言" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="选择语言" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/guide/contribute.html" class="nav-link">
  English
</a></li><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/guide/contribute.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  简体中文
</a></li></ul></div></div> <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/LuckysheetDocs/zh/" class="nav-link">
  首页
</a></div><div class="nav-item"><a href="/LuckysheetDocs/zh/guide/" class="nav-link router-link-active">
  指南
</a></div><div class="nav-item"><a href="https://mengshukeji.github.io/LuckysheetDemo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  演示
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="了解更多" class="dropdown-title"><span class="title">了解更多</span> <span class="arrow down"></span></button> <button type="button" aria-label="了解更多" class="mobile-dropdown-title"><span class="title">了解更多</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/about/" class="nav-link">
  关于
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="选择语言" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="选择语言" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/guide/contribute.html" class="nav-link">
  English
</a></li><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/guide/contribute.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  简体中文
</a></li></ul></div></div> <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/LuckysheetDocs/zh/guide/" aria-current="page" class="sidebar-link">快速上手</a></li><li><a href="/LuckysheetDocs/zh/guide/config.html" class="sidebar-link">整体配置</a></li><li><a href="/LuckysheetDocs/zh/guide/sheet.html" class="sidebar-link">工作表配置</a></li><li><a href="/LuckysheetDocs/zh/guide/cell.html" class="sidebar-link">单元格</a></li><li><a href="/LuckysheetDocs/zh/guide/operate.html" class="sidebar-link">表格操作</a></li><li><a href="/LuckysheetDocs/zh/guide/api.html" class="sidebar-link">API</a></li><li><a href="/LuckysheetDocs/zh/guide/resource.html" class="sidebar-link">教程与资源</a></li><li><a href="/LuckysheetDocs/zh/guide/FAQ.html" class="sidebar-link">常见问题</a></li><li><a href="/LuckysheetDocs/zh/guide/contribute.html" aria-current="page" class="active sidebar-link">贡献指南</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#我们的行为准则" class="sidebar-link">我们的行为准则</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何参与贡献" class="sidebar-link">如何参与贡献？</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何提交-issues" class="sidebar-link">如何提交 Issues</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何认领-issues" class="sidebar-link">如何认领 Issues</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何提交代码" class="sidebar-link">如何提交代码</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#代码规范" class="sidebar-link">代码规范</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何贡献文档" class="sidebar-link">如何贡献文档</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/zh/guide/contribute.html#如何成为luckysheet-committer" class="sidebar-link">如何成为Luckysheet Committer</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="贡献指南"><a href="#贡献指南" class="header-anchor">#</a> 贡献指南</h1> <p>欢迎！我们很高兴您能来到这里，并非常期待您能有兴趣参与 Luckysheet 贡献。当然，在您参与 Luckysheet 贡献之前，请确保通读以下全文：</p> <h2 id="我们的行为准则"><a href="#我们的行为准则" class="header-anchor">#</a> 我们的行为准则</h2> <ol><li><p>我们保证尊重所有参与贡献的人，不限于提出问题、文档和代码贡献、解决bug以及其它贡献的人；</p></li> <li><p>我们有义务遵守当地法律法规，所有的附带法律风险的行为我们都是拒绝的；</p></li> <li><p>我们反对任何参与者存在贬损评论、人身攻击、骚扰或侮辱他人以及其他非专业行为；</p></li> <li><p>我们有权并有责任删除或编辑与此行为准则不符的内容，不限于代码、Issues、wiki、文档以及其它。不遵守行为准则的参与者可能会被移除团队；</p></li> <li><p>我们接受任何人的监督，任何人可通过问题反馈，向我们报告发现的与此行为准则不符的事实存在。</p></li></ol> <h2 id="如何参与贡献"><a href="#如何参与贡献" class="header-anchor">#</a> 如何参与贡献？</h2> <ul><li>贡献文档：浏览文档可以加深您对 Luckysheet 的了解，一旦发现文档写得不清晰或逻辑混乱的地方，可以订正、修改、补充，您可以通过 <a href="https://support.qq.com/products/288322" target="_blank" rel="noopener noreferrer">中文论坛<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>或者 <a href="https://groups.google.com/g/luckysheet" target="_blank" rel="noopener noreferrer">谷歌论坛<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>给予反馈</li> <li>贡献代码：欢迎大家为 Luckysheet 社区贡献代码，欢迎您认领Open状态的 <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 和未完成的特性，提交PR，成为贡献者之一如果您在使用过程中发现有些功能无法满足您的需求或出现问题，请在Issues中记录</li> <li>参与Issue讨论：您可以在任一 <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 下发表您的建议</li> <li>Review代码：您可以在 <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer">Github<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>上看到所有贡献者提交的PR，您可以Review他们的代码并发表您的建议</li></ul> <h2 id="如何提交-issues"><a href="#如何提交-issues" class="header-anchor">#</a> 如何提交 Issues</h2> <p>在您提交特性/改进前，应该注意以下几点：</p> <ul><li>请先确认该特性/改进是否被其他人已经提交</li> <li>一个通俗易懂的标题来阐述你提交的Bug/提交特性/改进</li> <li>如果是Bug则详细描述该bug产生的原因，如果能够复现，请尽量提供完整的重现步骤</li> <li>如果是特性，那么该特性应该有广泛的适用性，适用于大部分用户，最好能够提供详尽的设计文档</li> <li>如果是改进，尽可能描述清楚此改进所带来的益处</li></ul> <p>具体步骤：</p> <ul><li>创建 <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> ，描述清楚问题</li> <li>如果你要解决该issue则将issue assign到自己名下，如果你仅仅是提交Bug/特性/改进，并没有时间去贡献代码，则assignne设置为空</li> <li>如果是比较大的特性/改进，尽量先输出设计文档，走 <a href="https://github.com/mengshukeji/Luckysheet-rfcs" target="_blank" rel="noopener noreferrer">Luckysheet RFC<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 流程，供其他人review</li></ul> <h2 id="如何认领-issues"><a href="#如何认领-issues" class="header-anchor">#</a> 如何认领 Issues</h2> <p>在 Luckysheet 的 <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 列表中，有很多由其他人创建的issue并未被修复，如果你感兴趣的话，可以认领这些issue。认领步骤如下：</p> <ul><li>在该issue下留言，表达想认领该任务的想法，另注明 <strong>@I can solve it</strong> 即可</li> <li>如果提交者没有意见，则将该issue assign到自己名下并及时更新进度</li> <li>如果是比较大的特性，尽量先输出设计文档，走 <a href="https://github.com/mengshukeji/Luckysheet-rfcs" target="_blank" rel="noopener noreferrer">Luckysheet RFC<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 流程，供其他人review</li> <li>开发代码并提交代码至github</li></ul> <h2 id="如何提交代码"><a href="#如何提交代码" class="header-anchor">#</a> 如何提交代码</h2> <ol><li>fork 到自己的仓库</li></ol> <p>进入  <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer">Luckysheet<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>  的Github页面 ，点击右上角按钮 Fork 进行 Fork。</p> <ol start="2"><li>git clone 到本地</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> clone https://github.com/<span class="token operator">&lt;</span>your_github_name<span class="token operator">&gt;</span>/Luckysheet.git
</code></pre></div><ol start="3"><li>上游建立连接</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code>
<span class="token builtin class-name">cd</span> Luckysheet
<span class="token function">git</span> remote <span class="token function">add</span> upstream https://github.com/mengshukeji/Luckysheet.git
</code></pre></div><ol start="4"><li>创建开发分支</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> checkout -b dev
</code></pre></div><ol start="5"><li>修改提交代码</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> <span class="token function">add</span> <span class="token builtin class-name">.</span> 
<span class="token function">npm</span> run commit
<span class="token function">git</span> push origin dev
</code></pre></div><ol start="6"><li>同步代码，将最新代码同步到本地</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> fetch upstream 
<span class="token function">git</span> rebase upstream/master
</code></pre></div><ol start="7"><li>如果有冲突（没有可以忽略）</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> status <span class="token comment"># 查看冲突文件，并修改冲突</span>
<span class="token function">git</span> <span class="token function">add</span> <span class="token builtin class-name">.</span>
<span class="token function">git</span> rebase --continue
</code></pre></div><p>提交git rebase --continue命令的时候，如果弹出vim提示编辑commit信息，则可以添加你的修改，然后保存退出</p> <blockquote><p>vim命令请参考阅读<a href="https://www.runoob.com/linux/linux-vim.html" target="_blank" rel="noopener noreferrer">vim<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <ol start="8"><li>提交分支代码</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> push origin dev
</code></pre></div><p>如果提示需要先pull 可以先拉取在提交</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> pull origin dev
<span class="token function">git</span> push origin dev
</code></pre></div><p>若弹出vim提示编辑commit信息，可以直接通过vim命令退出</p> <blockquote><p>vim命令请参考阅读<a href="https://www.runoob.com/linux/linux-vim.html" target="_blank" rel="noopener noreferrer">vim<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <ol start="9"><li>提交pr
去自己github仓库对应fork的项目，切换到刚刚创建修改的分支，点击new pull request，并添加上对应的描述，最后点击Create pull request进行提交</li></ol> <h2 id="代码规范"><a href="#代码规范" class="header-anchor">#</a> 代码规范</h2> <blockquote><p>一般性的代码规范示例</p></blockquote> <ul><li>保持块深度最小。尽可能避免嵌套If条件</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>comparison<span class="token punctuation">)</span> <span class="token keyword">return</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>variable<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> item <span class="token keyword">of</span> items<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">// Do something here</span>
<span class="token punctuation">}</span>

<span class="token comment">// INCORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>comparison<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span>variable<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> item <span class="token keyword">in</span> items<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token comment">// Do something here</span>
  <span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  <span class="token keyword">return</span>
<span class="token punctuation">}</span>
</code></pre></div><ul><li>不要使用操作数进行链比较</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>cb<span class="token punctuation">)</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>cb <span class="token operator">||</span> <span class="token punctuation">(</span>cb <span class="token operator">===</span> fn<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token comment">// INCORRECT</span>

cb <span class="token operator">&amp;&amp;</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">(</span><span class="token operator">!</span>cb <span class="token operator">||</span> <span class="token punctuation">(</span>cb <span class="token operator">===</span> fn<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><ul><li>所有变量都应该按字母顺序在块的开头声明</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">function</span> <span class="token function">foo</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">const</span> foo <span class="token operator">=</span> <span class="token string">'bar'</span>
  <span class="token keyword">const</span> bar <span class="token operator">=</span> <span class="token string">'foo'</span>

        <span class="token keyword">if</span> <span class="token punctuation">(</span>conditional<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>

  <span class="token operator">...</span>

  <span class="token keyword">return</span> foo
<span class="token punctuation">}</span>

<span class="token comment">// INCORRECT</span>

<span class="token keyword">function</span> <span class="token function">foo</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">const</span> foo <span class="token operator">=</span> <span class="token string">'bar'</span>

        <span class="token keyword">if</span> <span class="token punctuation">(</span>conditional<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>

  <span class="token keyword">const</span> bar <span class="token operator">=</span> <span class="token string">'foo'</span>

  <span class="token operator">...</span>

  <span class="token keyword">return</span> foo
<span class="token punctuation">}</span>
</code></pre></div><ul><li>尽快返回</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string">'foo'</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>condition2<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string">'bar'</span>
<span class="token comment">// Return must have a blank line above</span>
<span class="token keyword">return</span> <span class="token string">'fizz'</span>

<span class="token comment">// INCORRECT</span>
<span class="token keyword">const</span> variable <span class="token operator">=</span> <span class="token string">''</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span> <span class="token string">'foo'</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>condition2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span> <span class="token string">'bar'</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span> <span class="token string">'fizz'</span>
<span class="token punctuation">}</span>

<span class="token keyword">return</span> variable
</code></pre></div><h2 id="如何贡献文档"><a href="#如何贡献文档" class="header-anchor">#</a> 如何贡献文档</h2> <h2 id="如何成为luckysheet-committer"><a href="#如何成为luckysheet-committer" class="header-anchor">#</a> 如何成为Luckysheet Committer</h2> <p>任何人只要对 Luckysheet 项目做了贡献，那您就是官方承认的 Luckysheet 项目的Contributor了，从Contributor成长为Committer并没有一个确切的标准， 也没有任何预期的时间表，但是Committer的候选人一般都是长期活跃的贡献者，成为Committer并没有要求必须有巨大的架构改进贡献， 或者多少行的代码贡献，贡献代码、贡献文档、参与邮件列表的讨论、帮助回答问题等等都提升自己影响力的方式。</p> <p>潜在贡献清单（无特定顺序）：</p> <ul><li>提交自己发现的Bug、特性、改进到issue</li> <li>更新官方文档使项目的文档是最近的、撰写 Luckysheet 的最佳实践、特性剖析的各种对用户有用的文档</li> <li>执行测试并报告测试结果，性能测试与其他MQ的性能对比测试等</li> <li>审查(Review)其他人的工作（包括代码和非代码）并发表你自己的建议</li> <li>指导新加入的贡献者，熟悉社区流程</li> <li>发表关于 Luckysheet 的博客</li> <li>有利于 Luckysheet 社区发展的任何贡献</li> <li>......</li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/mengshukeji/Luckysheet/edit/master/docs/zh/guide/contribute.md" target="_blank" rel="noopener noreferrer">在 GitHub 上编辑此页</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">1/19/2021, 1:33:53 AM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
      ←
      <a href="/LuckysheetDocs/zh/guide/FAQ.html" class="prev">
        常见问题
      </a></span> <!----></p></div> </main></div><div class="global-ui"></div></div>
    <script src="/LuckysheetDocs/assets/js/app.02d9598d.js" defer></script><script src="/LuckysheetDocs/assets/js/2.daa13025.js" defer></script><script src="/LuckysheetDocs/assets/js/30.bf70d4f4.js" defer></script>
  </body>
</html>
